#ifndef NANE_IIMAGECODECSYSTEM_H
#   define  NANE_IIMAGECODECSYSTEM_H

#   include "nane/CodecSystem/ICodecSystem.h"
#   include "nane/core/PixelFormat.h"

namespace nane 
{
    struct IImageDecoder
        : public IDecoder
    {
        virtual uint32 GetWidth() = 0;
        virtual uint32 GetHeight() = 0;
        virtual EPixelFormat::raw_type GetFormat() = 0;
    };
    
    struct IImageEncoder
        : public IEncoder
    {
        virtual void SetWidth( uint32 _width ) = 0;
        virtual void SetHeight( uint32 _height ) = 0;
        virtual void SetFormat( EPixelFormat::raw_type _format ) = 0;
    };
    
    struct IImageCodecSystem
        : public ICodecSystem
    {
        // override return type
        virtual IImageDecoder* CreateDecoder( IInputRef* _input ) = 0;
        
        virtual IImageEncoder* CreateEncoder( IOutputRef* _output ) = 0;
    };
}   // namespace nane

#endif	// NANE_IIMAGECODECSYSTEM_H
